package br.com.rglariguet.pioneer.controller.asc;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import br.com.rglariguet.pioneer.controller.ControllerComum;
import br.com.rglariguet.pioneer.dao.DadosBasicosProdutoDAO;
import br.com.rglariguet.pioneer.modelos.Produto;
import br.com.rglariguet.pioneer.sap.ValidadorDeGarantia;
import br.com.rglariguet.pioneer.util.MensagemTela;

@Controller
@RequestMapping("/seguro/asc/")
public class GarantiaController extends ControllerComum {

	@Autowired
	private DadosBasicosProdutoDAO dadosBasicosProdutoDao;

	@RequestMapping("consultaDeGarantia")
	public ModelAndView abreTelaModeloNumeroDeSerie(boolean isRetornoConsulta, MensagemTela msg) {
		ModelAndView mv = new ModelAndView("/seguro/asc/consultaDeGarantia");
		mv.addObject("dadosBasicos", dadosBasicosProdutoDao.listarTodos());
		mv.addObject("msg", msg.getTipoMensagem() != null ? msg : null);
		if (!isRetornoConsulta) {
			mv.addObject("produto", new Produto());
		}
		return mv;
	}

	@RequestMapping("consultarGarantia")
	public ModelAndView consultarGarantia(@Valid Produto produto, BindingResult br) {
		if (br.hasFieldErrors("dadosBasicos.modelo") || br.hasFieldErrors("numeroDeSerie")) {
			return abreTelaModeloNumeroDeSerie(true, criaMsgErro("consulta.garantia.erro"));
		} else {
			
			// NRO SERIE: 4600000006
			// MODELO: AVH-3580DVD
			
			if (isProdutoEmGarantia(produto).equals("produto.garantia")) {
				return abreTelaModeloNumeroDeSerie(true, criaMsgSucesso(isProdutoEmGarantia(produto)));
			}else{
				return abreTelaModeloNumeroDeSerie(true, criaMsgAlerta(isProdutoEmGarantia(produto)));
			}
		}

	}

	@RequestMapping("consultaGarantiaDoProduto")
	public @ResponseBody String isProdutoEmGarantia(Produto produto) {
		if(new ValidadorDeGarantia().isProdudoEmGarantia(produto.getDadosBasicos().getModelo(), produto.getNumeroDeSerie())){
			return "produto.garantia";
		}else{
			return "produto.nao.garantia";
		}
	}
}
